package Controller;

import Beans.AreaBean;
import Beans.LoteBean;
import DAO.HibernateAreaDAO;
import DAO.HibernateLoteDAO;
import DTO.LoteDTO;
import Model.Lote;

public class AdministradorLote {
	private static AdministradorLote instancia;
	
	private AdministradorLote(){
		
	}
	
	public static AdministradorLote getInstancia(){
		if(instancia==null)
			instancia=new AdministradorLote();
		return instancia;
	}

	public LoteBean fromModelTOBean(Lote lote) {
		LoteBean loteBean=null;
		if(lote!=null){
		loteBean=new LoteBean();
		loteBean.setIdLote(lote.getId());
		loteBean.setCodigo(lote.getCodigo());
		loteBean.setEstado(lote.isEstado());
		loteBean.setProducto(AdministradorProducto.getInstancia().fromModelTOBean(lote.getProducto()));
		loteBean.setVencimiento(lote.getVencimiento());
		}
		return loteBean;
	}

	public Lote fromDTOTOModel(LoteDTO loteDTO) {
		Lote lote=null;
		if(loteDTO!=null){
		lote=new Lote();
		lote.setId(loteDTO.getId());
		lote.setCodigo(loteDTO.getCodigo());
		lote.setEstado(loteDTO.isEstado());
		lote.setProducto(AdministradorProducto.getInstancia().fromDTOTOModel(loteDTO.getProducto()));
		lote.setVencimiento(loteDTO.getVencimiento());
		}
		return lote;
	}
	
	public LoteDTO fromModelTODTO(Lote lote) {
		LoteDTO loteDTO=null;
		if(lote!=null){
			loteDTO=new LoteDTO();
			loteDTO.setId(lote.getId());
			loteDTO.setCodigo(lote.getCodigo());
			loteDTO.setEstado(lote.isEstado());
			loteDTO.setProducto(AdministradorProducto.getInstancia().fromModelTODTO(lote.getProducto()));
			loteDTO.setVencimiento(lote.getVencimiento());
		}
		return loteDTO;
	}

	public Lote fromBeanTOModel(LoteBean loteBean) {
		Lote lote=null;
		if(loteBean!=null){
		lote=new Lote();
		lote.setId(loteBean.getIdLote());
		lote.setCodigo(loteBean.getCodigo());
		lote.setEstado(loteBean.isEstado());
		lote.setProducto(AdministradorProducto.getInstancia().fromBeanTOModel(loteBean.getProducto()));
		lote.setVencimiento(loteBean.getVencimiento());
		}
		return lote;
	}

	public Lote buscarLote(Lote lote) {
		LoteBean ab=fromModelTOBean(lote);
		ab=HibernateLoteDAO.getInstancia().buscarLote(ab);
		return fromBeanTOModel(ab);
	}

}
